package com.yubest;

/**
 * 计算给定二叉树的所有左叶子之和。
 *
 * 示例：
 *
 *     3
 *    / \
 *   9  20
 *     /  \
 *    15   7
 *
 * 在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/sum-of-left-leaves
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @Author hweiyu
 * @Description
 * @Date 2021/11/10 9:50
 */
public class P0404 {
}

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution404 {

    public int sumOfLeftLeaves(TreeNode root) {
        if (null == root) {
            return 0;
        }
        int left = 0;
        if (null != root.left) {
            if (null == root.left.left && null == root.left.right) {
                left = root.left.val;
            } else {
                left = sumOfLeftLeaves(root.left);
            }
        }
        int right = null != root.right ? sumOfLeftLeaves(root.right) : 0;
        return left + right;
    }
}
